package com.binc.testspring.common.utils.base64;

import java.nio.charset.StandardCharsets;
import java.util.Base64;

/**
 * base64编码 解码工具
 */
public class Base64Util {


    final static Base64.Encoder encoder = Base64.getEncoder();
    final static Base64.Decoder decoder = Base64.getDecoder();

    /**
     * 给字符串加密
     * @param text
     * @return
     */
    public static String encode(String text) {
//        byte[] textByte = text.getBytes(StandardCharsets.UTF_8);
//        String encodedText = encoder.encodeToString(textByte);
//        return encodedText;
        return encoder.encodeToString(text.getBytes(StandardCharsets.UTF_8));  //这种写法不用try-catch异常了
    }

    /**
     * 将加密后的字符串进行解密
     * @param encodedText
     * @return
     */
    public static String decode(String encodedText) {
        return new String(decoder.decode(encodedText), StandardCharsets.UTF_8);
    }

    public static void main(String[] args) {

        String username = "Miracle Luna";
        String password = "p@sSW0rd";

        // 加密
        System.out.println("====  [加密后] 用户名/密码  =====");
        System.out.println(org.apache.logging.log4j.util.Base64Util.encode(username)); //TWlyYWNsZSBMdW5h
        System.out.println(org.apache.logging.log4j.util.Base64Util.encode(password));//cEBzU1cwcmQ=

        System.out.println("-------------------------");
        System.out.println(Base64Util.encode(username));//TWlyYWNsZSBMdW5h
        System.out.println(Base64Util.encode(password));//cEBzU1cwcmQ=

        //不同出处的base64方法结果都是一样的（根基都是rt.jar），所以大胆的使用


        // 解密
        System.out.println("\n====  [解密后] 用户名/密码  =====");
        System.out.println(Base64Util.decode(org.apache.logging.log4j.util.Base64Util.encode(username)));
        System.out.println(Base64Util.decode(org.apache.logging.log4j.util.Base64Util.encode(password)));
    }
}
